<?php 
/**
 * 分类管理控制器
 */
class CategoryController extends AuthController{
	private $model;
	/**
	 * 自动运行方法
	 */
	public function __init(){
		//为了防止不覆盖 AuthController里面的__init
		parent::__init();
		$this->model = K('Category');
	}
	/**
	 * 显示所有分类
	 */
	public function index(){
		//调用模型的getData获得组合好的数组
		$data = Data::tree($this->model->all(), 'cname','cid','pid');
		$this->assign('data',$data);
		$this->display();
	}
	
	
	
	/**
	 * 添加顶级分类
	 */
	public function add(){
		if(IS_POST){
			//调用模型的添加方法，里面有自动验证
		 	if(!$this->model->addData()){
		 		//如果验证不通过，则提示错误
		 		$this->error($this->model->error);
		 	}
			$this->success('添加成功');
		}
	    $this->display();
	}
	
	/**
	 * 添加子分类
	 */
	public function addSon(){
		if(IS_POST){
			if(!$this->model->addData()){
				$this->error($this->model->error);
			}
			$this->success('添加成功');
		}
		// 获得所属分类
		$cid = Q('get.cid',0,'intval');
		$fatherCate = $this->model->where("cid={$cid}")->find();
		$this->assign('fatherCate',$fatherCate);
		$this->display();
	}
	/**
	 * 编辑分类
	 */
	public function edit(){
		$cid = Q('get.cid',0,'intval');
		if(IS_POST){
			if(!$this->model->edit($cid)){
				$this->error($this->model->error);
			}
			$this->success('编辑成功',U('index'));
		}
		// 获得旧内容
		$oldData = $this->model->where("cid={$cid}")->find();
		$this->assign('oldData',$oldData);
		// 处理所属分类数据
		// 更改所属分类不能是自己和自己的子集
		// 1.找到当前cid所对应的子集
		$sonCid = $this->model->getSon($this->model->all(),$cid);
		// 把自己也压入
		$sonCid[] = $cid;
		// 2.排除自己和自己的子集，然后取得剩下的分类供选择
		$data = $this->model->where("cid not in(" . implode(',', $sonCid) . ")")->all();
		// 3.把数组组合树状结构的数据分配到页面
		$data = Data::tree($data,'cname','cid','pid');
		$this->assign('data',$data);
		$this->display();
	}
	
	/**
	 * 删除分类
	 */
	public function del(){
		$cid = Q('get.cid',0,'intval');
		//先判断是否有子集分类
		$sonData = $this->model->where("pid={$cid}")->find();
		if($sonData){
			$this->error('请先删除该分类下面的子集分类');
		}
		//执行删除
		$this->model->where("cid={$cid}")->delete();
		//成功提示
		$this->success('删除成功');
	}
	
	//点击收缩，要查询发送过来的cid的所有子集cid
	public function ajaxText(){
		$cid = Q('post.cid',0,'intval');
		$data = $this->model->all();
		$sonCid = $this->model->getSon($data,$cid);
		$this->ajax($sonCid);
	}

	
	
	
	
}


 

 
 
 
 
 